#ifndef DependencyDecoder3O_H
#define DependencyDecoder3O_H
#include"DependencyDecoder3OGSibling.h"

class DependencyDecoder3O : public DependencyDecoder3OGSibling{
public:
	DependencyDecoder3O(DependencyPipe *pipe);

	virtual ~DependencyDecoder3O();

	int calcNum(int length);

	vector<pair<FeatureVector*, string*> >* decodeProjective(DependencyInstance* inst,
		vector<vector<vector<double> > > &probs, vector<vector<vector<double> > > &probs_trips,
		vector<vector<vector<double> > > &probs_sibs, vector<vector<vector<double> > > &probs_grands,
		vector<vector<double> > &probs_gchs, vector<vector<vector<vector<double> > > > &probs_gtrips, 
		vector<vector<vector<vector<double> > > > &probs_gsibs, vector<vector<vector<double> > > &probs_coords,
		vector<vector<vector<vector<double> > > > &probs_ttrips, vector<vector<vector<vector<double> > > > &probs_tsibs,
		vector<vector<vector<vector<double> > > > &nt_probs, int K, ParseForestItem *****GTSib_chart);

	double getTriTripProb(int par, int ch1, int ch2, int ch3, vector<vector<vector<vector<double> > > > &probs_ttrips, vector<vector<vector<vector<double> > > > &probs_tsibs);
};
#endif